home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / util2 / grabkick.lha / GrabKick.a < prev    next >
Text File  |  1996-01-05  |  3KB  |  123 lines

  1. ;**** GrabKick.a ******************************************
  2.  
  3.     INCDIR    AINCLUDE:
  4.     INCLUDE    libraries/dosextens.i
  5.     INCLUDE lvo.i
  6.     INCLUDE dos/dos.i
  7.     INCLUDE    workbench/startup.i
  8.     INCLUDE    workbench/workbench.i
  9.  
  10. ; Programmheader
  11. ;
  12. ;    Name:        GrabKick
  13. ;    Author:        SDI
  14. ;    Distribution:    PD
  15. ;    Description:    liest Kickstart aus und schreibt ihn in Datei
  16. ;    Compileropts:    -
  17. ;    Linkeropts:    -
  18. ;    CLI-Parameter:    -
  19. ;
  20. ; 1.2   07.08.95 : neue Berechnung für Revisionsnummer gleicht Rechen-
  21. ;    fehler von MaxonC++ aus - Länge 880
  22. ; 1.3   03.12.95 : Mit Assembler neukompiliert - Länge 244
  23. ; 1.4   04.12.95 : etwas verkürzt - Länge 236
  24. ; 1.5   10.12.95 : etwas verkürzt - Länge 228
  25. ; 1.6   19.12.95 : läuft auch von WB aus - Länge 300
  26. ; 1.7   05.01.96 : CLI Parameter Filename eingebaut, Fehler entfernt
  27. ;    Länge 332
  28.  
  29. ;**** Programm ********************************************
  30.  
  31.     SECTION "0",CODE
  32.     SUBQ.W    #1,D0        ; SUBQ statt Offset -1, da TST statt CMP #1
  33.     MOVE.B    #0,0(A0,D0.W)        ;Letztes Zeichen 0 - CString
  34.     MOVEA.L    A0,A5
  35.     TST.W    D0    ;Wenn nur ein Zeichen, dann kein Param. angegeben!
  36.     BNE.B    GetTask
  37.     SUBA.L    A5,A5            ;Name entfernen
  38. GetTask    SUBA.L    A1,A1            ;A1=0 = eigener Task
  39.     MOVEQ    #0,D7
  40.     MOVEA.L    4.W,A6
  41.     JSR    _LVOFindTask(A6)    ;wo sind wir?
  42.     MOVEA.L    D0,A4            ;Adresse retten
  43.  
  44.     TST.L    pr_CLI(A4)        ;Laufen wir unter WB?
  45.     BNE.B    fromCLI
  46.     LEA    pr_MsgPort(A4),A0
  47.     JSR    _LVOWaitPort(A6)    ;Warte auf Start-Message
  48.     LEA    pr_MsgPort(A4),A0
  49.     JSR    _LVOGetMsg(A6)        ;Hole Msg
  50.     MOVE.L    D0,D7                ;D7 - WBStartUp Message
  51. fromCLI    LEA    KICKEND(PC),A2            ;A2 - KickStr-Ende
  52.     MOVEQ    #33,D0
  53.     LEA    DOSNAME(PC),A1
  54.     JSR    _LVOOpenLibrary(A6)
  55.     TST.L    D0
  56.     BEQ.W    ENDE            ;Librarybase != 0 ?
  57.     MOVEA.L    D0,A6            ;DosBase -> A6, da nur Dos-Calls
  58.     TST.L    D7
  59.     BEQ.B    NoWB
  60.     MOVEA.L    D7,A0
  61.     MOVEA.L    sm_ArgList(A0),A0
  62.     CMPA.L    #0,A0
  63.     BEQ.B    ENDE
  64.     MOVE.L    (A0),D1
  65.     JSR    _LVOCurrentDir(A6)
  66. NoWB    MOVE.L    $00FFFFEC.L,D3        ;D3 - RomSize
  67.     MOVEA.L    #$01000000,A3
  68.     SUBA.L    D3,A3            ;A3 - Romstart
  69.     MOVEQ    #0,D4
  70.     MOVE.W    12(A3),D4        ;D4 - Romvers
  71.     MULU    #1000,D4
  72.     ADD.W    14(A3),D4        ;D4 - Fullversion
  73. LOOP
  74.     MOVE.L    D4,D2
  75.     DIVU    #10,D2            ;durch Zehn teilen
  76.     MOVE.W    D2,D4            ;Ergebnis nach D4
  77.     SWAP    D2
  78.     ADD.B    D2,(A2)            ;Rest in Namensfile
  79.     SUBQ.L    #1,A2            ;Zähler 1 weiter zurück
  80.     TST.L    D4
  81.     BNE.B    LOOP
  82. ;Schleifenende
  83.     MOVE.W    #MODE_NEWFILE,D2    ;Modus-Parameter
  84.     MOVE.L    A5,D1            ;wenn CLI-Param, dann nutzen
  85.     BNE.B    Open
  86.     LEA    KICKSTR(PC),A2
  87.     MOVE.L    A2,D1            ;sonst Name-Parameter
  88. Open    JSR    _LVOOpen(A6)
  89.     MOVE.L    D0,D4        ;D4 - Filehandle
  90.     BEQ.B    CLEANUP
  91. ;                    Anzahl-Parameter D3 hat schon Wert
  92.     MOVE.L    A3,D2            ;Puffer-Parameter
  93.     MOVE.L    D4,D1            ;Filehandle-Parameter
  94.     JSR    _LVOWrite(A6)
  95.     MOVE.L    D0,D2        ;D2 - Write Rückgabe
  96.     MOVE.L    D4,D1            ;Filehandle-Parameter
  97.     JSR    _LVOClose(A6)
  98.     CMP.L    #$FFFFFFFF,D2    ;D2 == -1 --> File löschen
  99.     BNE.B    CLEANUP
  100.     MOVE.L    A2,D1
  101.     JSR    _LVODeleteFile(A6)
  102. CLEANUP
  103.     MOVEA.L    A6,A1
  104.     MOVEA.L    4.W,A6
  105.     JSR    _LVOCloseLibrary(A6)
  106. ENDE
  107.     TST.L    D7            ;von Workbench ?
  108.     BEQ.B    _exit            ;nein - war CLI
  109.  
  110.     MOVEA.L    4.W,A6
  111.     JSR    _LVOForbid(A6)        ;Schutzmaßnahme
  112.     MOVEA.L    D7,A1            ;Message holen
  113.     JSR    _LVOReplyMsg(A6)
  114.  
  115.     MOVEQ    #0,D0
  116. _exit    RTS    
  117.     CSTRING    '$VER: GrabKick 1.7 (05.01.96) (PD) by SDI'
  118. DOSNAME    CSTRING    'dos.library'
  119. KICKSTR    DC.B    'kick0000'
  120. KICKEND    CSTRING    '0'
  121.     END
  122.  
  123.